/*
#######################################################
History : 2008.12.22 허진원 생성
2012.03.14 스크립트 수정/이전
Description : 검색어 자동완성 Java Script
#######################################################
*/
var NowNo=-1; // 자동완성 결과선택 번호
var timer = null;
// 검색 실행
function fnTopSearch(frmnm,frmval){
var frm = document.searchForm;
var chkTvs = frm.tvsTxt.value==frmval;
frmnm.value = frmval;
if(frm.extUrl.value!=""&&chkTvs) {
self.location.href=frm.extUrl.value;
} else {
frm.cpg.value=1;
if (frm.rect.value.length<=0){
alert('검색어를 입력해 주세요');
frm.sTtxt.focus();
return;
} else {
frm.tvsTxt.value="";
frm.submit();
}
}
}
// 입력창 키처리
function fnKeyInput(ek) {
switch(ek) {
case 38:
// 방향키:위
if($("#atl").css("display")!="none"){
if($("#rstNo" + (NowNo-1))) {
if(NowNo>=0) $("#rstNo" + NowNo).removeClass("activate");
NowNo--;
$("#rstNo" + NowNo).addClass("activate");
$("#rstNo" + NowNo).focus();
document.searchForm.sTtxt.focus();
selectText($("#rstNo" + NowNo).text());
}
}
break;
case 40:
// 방향키:아래
if($("#atl").css("display")!="none"){
if($("#rstNo" + (NowNo+1))) {
if(NowNo>=0) $("#rstNo" + NowNo).removeClass("activate");
NowNo++;
$("#rstNo" + NowNo).addClass("activate");
$("#rstNo" + NowNo).focus();
document.searchForm.sTtxt.focus();
selectText($("#rstNo" + NowNo).text());
}
}
break;
default:
if(timer) {
clearTimeout(timer);
}
timer = setTimeout(function() {
fnAutoCompLayer('on');
}, 300);
NowNo = -1;
break;
}
}
var strCont, strHead, strFoot;
//레이어 머릿글
strHead = "
";
//자동완성 실행
function fnAutoCompLayer(key) {
var frm = document.searchForm;
// 자동완성 레이어 내용 작성
if(!frm.sTtxt.value) {
strCont = strHead + "검색어 자동완성 기능을 사용하고 계십니다." + strFoot;
} else {
// XML로딩
$.ajax({
type: "GET",
url: "/search/act_autoComplete.asp",
data:"str=" + encodeURI(frm.sTtxt.value),
dataType: "xml",
cache: false,
async: true,
timeout: 5000,
beforeSend: function(x) {
if(x && x.overrideMimeType) {
x.overrideMimeType("text/xml;charset=UTF-8");
}
},
success: function(xml) {
if($(xml).find("categoryPage").find("item").length>0) {
var result="";
// item노드 Loop
$(xml).find("categoryPage").find("item").each(function(idx) {
result+= "";
result+= convTxtColor($(this).find("Word").text(),$(this).find("Seed").text(),$(this).find("Conv").text());
result+= "";
});
strCont= strHead + result + strFoot;
//자동완성 레이어 출력
$("#atl").html(strCont);
if(strCont!=(strHead+strFoot)) fnSACLayerOnOff(true);
else fnSACLayerOnOff(false);
NowNo = -1;
}
},
error: function(xhr, status, error) {/*alert(xhr + '\n' + status + '\n' + error);*/}
});
}
//자동완성 레이어 닫기
if(!(($("#atl").css("display")=="none"||key=="on")&&(frm.sTtxt.value||key=="off"))) {
$("#atl").empty();
fnSACLayerOnOff(false);
}
}
//레이어on/off
function fnSACLayerOnOff(sw) {
if(sw) {
if($("#atl").html()) $("#atl").fadeIn("fast");
}
else $("#atl").fadeOut("fast");
}
//시간차 레이어 닫기
var hide_SACLayer_started = false;
function HideSACLayer() {
hide_SACLayer_started = true;
setTimeout("DoHideSACLayer()", 200);
}
function DoHideSACLayer() {
if (hide_SACLayer_started == true) {
fnSACLayerOnOff(false);
}
hide_SACLayer_started = false;
}
function CancelHideSACLayer() {
hide_SACLayer_started = false;
}
//결과에서 검색창으로..
function selectText(txt) {
document.searchForm.sTtxt.value=txt;
}
//선택 문자 색전환
function convTxtColor(sO,sS,sC) {
//4.3
//var v = sO.replace(sS,""+sS+"");
//return v;
if(sC=="null") {
return sO.replace(sS,""+sS+"");
} else {
return sO.replace(sC,""+sC+"");
}
}